Client-server communications are a common type of inter-computer communications. Typically, one or more clients communicate with one or more servers, over a path that may span one or more networks, each of which that may be a private or a public network. Private networks non-restrictively include corporation-maintained local-area and wide-area networks, intranets, extranets, etc. An example of a public network is the Internet.
In one type of client-server communication, there are one or more servers referred to as directory servers. Directory servers typically maintain a specific type of information, regarding contact and other identification information of clients and servers that may non-restrictively be referred to as directory service-related information. Thus, when a client desires to learn the location, address or identification of another client or of a server, the client is able to query a directory server to obtain this information.
In one type of client-server architecture, each client maintains a list of all the servers within its domain, where domain is non-restrictively defined herein as a predetermined region in which given clients and servers are located and which may share a common part of an identifying address. Each of these servers, in turn, stores a copy of all enterprise-wide directory service-related information—that is, information regarding clients and servers residing anywhere in a region that is wider than the specific domain in which the server is located. Thus, any server can respond to any directory service-related request of a client in its domain, even if the request relates to a client or a server that is not located within the domain.
However, maintaining enterprise-wide information at each server in each domain can be a time-consuming, difficult and expensive task. Therefore, in another type of client-server architecture, each server within a domain only maintains the directory service-related information for the clients and servers in its domain. Clients are configured so that when they send a directory service-related request to a server in their domain, they understand that the request may be delegated by the server to another server for response, particularly if the request relates to a client or a server outside of their domain. The server to which the request is delegated typically lies in a different domain. Thus, when a server fields a directory-service related request from a client, if it is not an appropriate server to respond to the request, the server forwards, non-restrictively referred to herein as delegates, the request to an out-of-domain server. This server may then itself delegate the request if it, too, is an inappropriate server, and this process typically continues until an appropriate server receives the delegated request.
A difficulty exists, however, when clients of the type first described need to communicate with servers of the type described last. That is, clients that do not understand that their directory service-related requests may be delegated to other servers may have difficulty receiving suitable responses to their requests when they are sent to servers that do not store enterprise-wide directory service-related information. For example, a client requesting out-of-domain directory service-related information from a server that does not maintain enterprise-wide directory service-related information will not be able to obtain the information if the server is not able to delegate the request to a server that does store the requested-for information. For this and other reasons, there is a need for the present invention.